home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / dggrqf.z / dggrqf
Text File  |  1996-03-14  |  6KB  |  199 lines

  1.  
  2.  
  3.  
  4. DDDDGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))                                                          DDDDGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      DGGRQF - compute a generalized RQ factorization of an M-by-N matrix A and
  10.      a P-by-N matrix B
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE DGGRQF( M, P, N, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO
  14.                         )
  15.  
  16.          INTEGER        INFO, LDA, LDB, LWORK, M, N, P
  17.  
  18.          DOUBLE         PRECISION A( LDA, * ), B( LDB, * ), TAUA( * ), TAUB( *
  19.                         ), WORK( * )
  20.  
  21. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  22.      DGGRQF computes a generalized RQ factorization of an M-by-N matrix A and
  23.      a P-by-N matrix B:
  24.  
  25.                  A = R*Q,        B = Z*T*Q,
  26.  
  27.      where Q is an N-by-N orthogonal matrix, Z is a P-by-P orthogonal matrix,
  28.      and R and T assume one of the forms:
  29.  
  30.      if M <= N,  R = ( 0  R12 ) M,   or if M > N,  R = ( R11 ) M-N,
  31.                       N-M  M                           ( R21 ) N
  32.                                                           N
  33.  
  34.      where R12 or R21 is upper triangular, and
  35.  
  36.      if P >= N,  T = ( T11 ) N  ,   or if P < N,  T = ( T11  T12 ) P,
  37.                      (  0  ) P-N                         P   N-P
  38.                         N
  39.  
  40.      where T11 is upper triangular.
  41.  
  42.      In particular, if B is square and nonsingular, the GRQ factorization of A
  43.      and B implicitly gives the RQ factorization of A*inv(B):
  44.  
  45.                   A*inv(B) = (R*inv(T))*Z'
  46.  
  47.      where inv(B) denotes the inverse of the matrix B, and Z' denotes the
  48.      transpose of the matrix Z.
  49.  
  50.  
  51. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  52.      M       (input) INTEGER
  53.              The number of rows of the matrix A.  M >= 0.
  54.  
  55.      P       (input) INTEGER
  56.              The number of rows of the matrix B.  P >= 0.
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. DDDDGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))                                                          DDDDGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))
  71.  
  72.  
  73.  
  74.      N       (input) INTEGER
  75.              The number of columns of the matrices A and B. N >= 0.
  76.  
  77.      A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
  78.              On entry, the M-by-N matrix A.  On exit, if M <= N, the upper
  79.              triangle of the subarray A(1:M,N-M+1:N) contains the M-by-M upper
  80.              triangular matrix R; if M > N, the elements on and above the (M-
  81.              N)-th subdiagonal contain the M-by-N upper trapezoidal matrix R;
  82.              the remaining elements, with the array TAUA, represent the
  83.              orthogonal matrix Q as a product of elementary reflectors (see
  84.              Further Details).
  85.  
  86.      LDA     (input) INTEGER
  87.              The leading dimension of the array A. LDA >= max(1,M).
  88.  
  89.      TAUA    (output) DOUBLE PRECISION array, dimension (min(M,N))
  90.              The scalar factors of the elementary reflectors which represent
  91.              the orthogonal matrix Q (see Further Details).  B
  92.              (input/output) DOUBLE PRECISION array, dimension (LDB,N) On
  93.              entry, the P-by-N matrix B.  On exit, the elements on and above
  94.              the diagonal of the array contain the min(P,N)-by-N upper
  95.              trapezoidal matrix T (T is upper triangular if P >= N); the
  96.              elements below the diagonal, with the array TAUB, represent the
  97.              orthogonal matrix Z as a product of elementary reflectors (see
  98.              Further Details).  LDB     (input) INTEGER The leading dimension
  99.              of the array B. LDB >= max(1,P).
  100.  
  101.      TAUB    (output) DOUBLE PRECISION array, dimension (min(P,N))
  102.              The scalar factors of the elementary reflectors which represent
  103.              the orthogonal matrix Z (see Further Details).  WORK
  104.              (workspace/output) DOUBLE PRECISION array, dimension (LWORK) On
  105.              exit, if INFO = 0, WORK(1) returns the optimal LWORK.
  106.  
  107.      LWORK   (input) INTEGER
  108.              The dimension of the array WORK. LWORK >= max(1,N,M,P).  For
  109.              optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3), where
  110.              NB1 is the optimal blocksize for the RQ factorization of an M-
  111.              by-N matrix, NB2 is the optimal blocksize for the QR
  112.              factorization of a P-by-N matrix, and NB3 is the optimal
  113.              blocksize for a call of DORMRQ.
  114.  
  115.      INFO    (output) INTEGER
  116.              = 0:  successful exit
  117.              < 0:  if INF0= -i, the i-th argument had an illegal value.
  118.  
  119. FFFFUUUURRRRTTTTHHHHEEEERRRR DDDDEEEETTTTAAAAIIIILLLLSSSS
  120.      The matrix Q is represented as a product of elementary reflectors
  121.  
  122.         Q = H(1) H(2) . . . H(k), where k = min(m,n).
  123.  
  124.      Each H(i) has the form
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. DDDDGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))                                                          DDDDGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))
  137.  
  138.  
  139.  
  140.         H(i) = I - taua * v * v'
  141.  
  142.      where taua is a real scalar, and v is a real vector with
  143.      v(n-k+i+1:n) = 0 and v(n-k+i) = 1; v(1:n-k+i-1) is stored on exit in
  144.      A(m-k+i,1:n-k+i-1), and taua in TAUA(i).
  145.      To form Q explicitly, use LAPACK subroutine DORGRQ.
  146.      To use Q to update another matrix, use LAPACK subroutine DORMRQ.
  147.  
  148.      The matrix Z is represented as a product of elementary reflectors
  149.  
  150.         Z = H(1) H(2) . . . H(k), where k = min(p,n).
  151.  
  152.      Each H(i) has the form
  153.  
  154.         H(i) = I - taub * v * v'
  155.  
  156.      where taub is a real scalar, and v is a real vector with
  157.      v(1:i-1) = 0 and v(i) = 1; v(i+1:p) is stored on exit in B(i+1:p,i), and
  158.      taub in TAUB(i).
  159.      To form Z explicitly, use LAPACK subroutine DORGQR.
  160.      To use Z to update another matrix, use LAPACK subroutine DORMQR.
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.